iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
DevOps

通过Jenkins 实现 CI&CD系列 第 7

环境变量

  • 分享至 

  • xImage
  •  

昨天,我们已经讲解了 Jenkinsfile 的基本语法,今天我们来看一看 Jenkinsfile 中的环境变量。

在 Jenkins 中,环境变量(environment vriables)可分为:

  • 全局环境变量
  • 自定义环境变量
  • 动态环境变量

全局环境变量:

全局环境变量,就是 Jenkins 的内置公开的变量,你可以在 Pipeline 文件中,直接使用它。

你可以在这个链接里面获取到完成的全局环境变量列表以及说明:
${YOUR_JENKINS_URL}/pipeline-syntax/globals#env

我们这里就随便选择了两个作为说明:
BUILD_ID:就是我们前面说的 Build 名,它由 # 加 数字构成。
$NODE_NAME:构建节点的名称,如果是直接在 Jenkins 上构建的,其值为 “built-in”,如果在代理节点上构建,其值为代理节点的名称

使用此 pipeline 文件创建一个 pipeline 项目,并进行 build。

pipeline {
    agent any
    stages {
        stage('echo') {
            steps {
                sh 'echo $BUILD_ID on $NODE_NAME'
            }
        }
    }
}

https://ithelp.ithome.com.tw/upload/images/20230907/20099494L7EQRckof5.png

Build 完成后,你可以在 Build History 下面看到一个数字,第一次 Build,这个值应该就是 1,这个就是 Build ID。点击这个 ID,进入这个 Build。
https://ithelp.ithome.com.tw/upload/images/20230907/20099494WPyHk1J6UJ.png

在 Console Output 你可以看到 “1 on built-in” 这样的输出,其中 “1” 就是你的 BUILD_ID,“built-in” 表示你是在 Jenkins 上构建的。
https://ithelp.ithome.com.tw/upload/images/20230907/20099494psM85dWatW.png

自定义变量

顾名思义,就是我们自己定义的变量。

我们可以通过 environment “关键字” 来组织一个环境变量语句块,在这个语句块中定义我们需要使用的环境变量。如下面的示例,我们定义了两个变量,FIRSTNAME 和 LASTNAME。然后在 echo 中输出这两个变量的值。

修改我们前面创建的 pipeline 项目,并重新 build。

pipeline {
    agent any
    environment {
        FIRSTNAME = 'Aaron'
        LASTNAME = 'Yu'
    }
    stages {
        stage('echo') {
            steps {
                sh 'echo $FIRSTNAME $LASTNAME'
            }
        }
    }
}

https://ithelp.ithome.com.tw/upload/images/20230907/20099494niZLa7j6iA.png

Build 完成后,我们可以看到 build ID 变成了 #2,点击该 build。我们可以看到我们自定义的环境变量在 Console Output 中输出了。
https://ithelp.ithome.com.tw/upload/images/20230907/200994943S0hk2UbPa.png

动态环境变量

就是将脚本(命令)的输出的内容或返回的状态码返回赋值给变量。本质上和自定义变量没有什么区别。其中 returnStatus 表示返回的是状态码, returnStdout 表示返回的是输出的内容。

修改我们前面创建的 pipeline 项目,并重新 build。

pipeline {
    agent any 
    environment {
        CC = """${sh(
                returnStdout: true,
                script: 'echo "clang"'
            )}""" 
        EXIT_STATUS = """${sh(
                returnStatus: true,
                script: 'exit 1'
            )}"""
    }
    stages {
        stage('Example') {
            steps {
                sh 'echo $CC'
                sh 'echo $EXIT_STATUS'
            }
        }
    }
}

https://ithelp.ithome.com.tw/upload/images/20230907/20099494yxvncdD9GN.png

Build 完成后,点击对应的 Build ID。我们可以看到这些环境变量在 Console Output 中输出了。
https://ithelp.ithome.com.tw/upload/images/20230907/20099494zFDKgbwqMg.png


上一篇
Jenkinsfile 语法
下一篇
凭据(Credentials)
系列文
通过Jenkins 实现 CI&CD26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言